package com.vhall.component.service.vote;


import com.vhall.component.entity.page.vo.PageVO;
import com.vhall.component.entity.vote.VoteOptionCountEntity;
import com.vhall.component.entity.vote.vo.*;

import java.util.List;

/**
 * 投票通用的功能
 *
 * @author longzhen.gong
 * @date 2021/7/6 11:53
 */
public interface VoteService {

    /**
     * 创建投票
     *
     * @param reqVO
     * @return
     */
    VotesCreateRspVO create(VotesCreateReqVO reqVO);

    /**
     * 更新投票
     *
     * @param votesUpdateRepVO
     * @return
     */
    VotesUpdateRspVO update(VotesUpdateRepVO votesUpdateRepVO);

    /**
     * 查询列表
     *
     * @param reqVO
     * @return
     */
    PageVO<VotesListRspVO> list(VotesListReqVO reqVO);

    /**
     * 投票信息，是否回答过
     *
     * @param reqVO
     * @param accountId
     * @return
     */
    VoteInfoRspVO info(VoteInfoReqVO reqVO, Integer accountId);

    /**
     * 投票详情
     *
     * @param reqVO
     * @param accountId
     * @return
     */
    List<VoteDetailRspVO> voteDetail(VoteDetailReqVO reqVO, Integer accountId);

    String answerCreate(String client, String id, String answer);

    /**
     * 获取选项信息
     *
     * @param rvlkId
     * @return
     */
    List<VoteOptionCountEntity> getVoteOptionCountInfoByRvlkId(Long rvlkId);

    /**
     * 投票绑定到房间上
     *
     * @param voteId
     * @param roomId
     * @return
     */
    Boolean bindRoom(Long voteId, String roomId);

}
